//////////////////////////////////////////////////////////////////////////////////
//
// 兼容旧版
//
////////////////////////////////////


var option_bar_line = {
    color: ['#4cabce', '#7755aa', '#e5624e'],
    tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
    legend: {
        left: 'right',
        data: []
    },
    calculable: true,
    xAxis: [{
            type: 'category',
            axisTick: {show: false},
            axisLabel: {rotate: 20,},
            data: []
    }],
    yAxis: [ {type: 'value'}, {type: 'value'}],
    dataZoom: [{type: 'inside'}, { type: 'slider'}],
    series: [
        {
            name: '',
            type: 'bar',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'blue' }},
            itemStyle: { normal: {barBorderRadius: [15, 0, 0, 0]}},
            barGap: 0,
            data: []
        },
        {
            name: '',
            type: 'bar',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'purple' }},
            itemStyle: { normal: { barBorderRadius: [0, 10, 0, 0]}},
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'red' }},
            yAxisIndex: 1,
            data: []
        },

    ]   
}


var option_lines = {
    color: ['#4cabce', '#7755aa', '#e5624e'],
    tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
    legend: {
        left: 'right',
        data: []
    },
    calculable: true,
    xAxis: [{
            type: 'category',
            axisTick: {show: false},
            axisLabel: {rotate: 20,},
            data: []
    }],
    yAxis: [ {type: 'value', min: 'dataMin'}, {type: 'value', min: 'dataMin'}  ],
    dataZoom: [{type: 'inside',}, {type: 'slider'}],
    series: [
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'blue' }},
            smooth: true,
            itemStyle: { normal: {barBorderRadius: [15, 0, 0, 0]}},
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'red' }},
            smooth: true,
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'purple' }},
            smooth: true,
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'darkgreen' }},
            smooth: true,
            data: []
        },
        

    ]   
}




/////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
//  以上兼容旧版
//
//
/////////////////////////////////////////////////////////////////////////////

var rd = rd || {};

rd.chart_option = {
    createNew: function(type){
        var p = {};
		if(type == 'pie'){ // 当指定为 pie 型时
			p.option = {
				tooltip: { trigger: 'item',  formatter: "{b}:{d}%" },
				series: [
				    {
				        name:'',
				        type:'pie',
				        // radius: ['55%', '70%'],
				        label: {normal: { formatter: "{b}:{d}%", position: "outter" }},
				        labelLine: { normal: { show: true }},
				        data:[] // 格式 {value:0, name:''},
				    }
				]
			}
		}
		if(type == "funnel"){
			p.option = {
				tooltip: {
					trigger: 'item',
					formatter: "{b} : {c}%"
				},

				legend: {
					data: [],
					left: 'left',
					top: 'bottom',
					orient: 'vertical',
					textStyle: {
						color: '#666'
					}
				},
				calculable: true,
				series: [
					{
						name:'',
						type:'funnel',
						min: 0,
						max: 100,
						minSize: '0%',
						maxSize: '100%',
						funnelAlign: 'center',
						sort: 'descending',
						gap: 1,
						label: {
							show: true,
							position: 'inside',
							formatter: "{b} : {c}%"
						},
						labelLine: {
							length: 10,
							lineStyle: {
								width: 1,
								type: 'solid'
							}
						},
						itemStyle: {
							shadowBlur: 4,
							shadowColor: '#666',
							shadowOffsetX: 2,
							shadowOffsetY: 2,
						},
						emphasis: {
							label: {
								fontSize: 16,
								shadowBlur: 4,
								shadowColor: '#666',
							}
						},
						data: [
							// {value: 0, name: '体验课签约用户'},
						]
					}
				]	
			}
		}
		if(type == "gauge"){
			p.option = {
				series: [
					{
						name:'',
						type:'gauge',
						min:0,
						max:100,
						splitNumber:5,
						radius: '90%',
						center: ['50%', '50%'],
						axisLine: {            // 坐标轴线
							lineStyle: {       // 属性lineStyle控制线条样式
								color: [[0.25, 'lime'],[0.75, '#1e90ff'],[1, '#ff4500']],
								width: 3,
								shadowColor : '#ccc', //默认透明
								shadowBlur: 10
							}
						},
						axisLabel: {            // 坐标轴小标记
							textStyle: {       // 属性lineStyle控制线条样式
								fontWeight: 'bolder',
								color: '#666',
								shadowColor : '#ccc', //默认透明
								shadowBlur: 10,
							},
							formatter: '{value}%',
						},
						axisTick: {            // 坐标轴小标记
							length :12,        // 属性length控制线长
							lineStyle: {       // 属性lineStyle控制线条样式
								color: 'auto',
								shadowColor : '#ccc', //默认透明
								shadowBlur: 10
							}
						},
						splitLine: {           // 分隔线
							length :20,         // 属性length控制线长
							lineStyle: {       // 属性lineStyle（详见lineStyle）控制线条样式
								width:3,
								color: '#666',
								shadowColor : '#ccc', //默认透明
								shadowBlur: 10
							}
						},
						pointer: {           // 分隔线
							shadowColor : '#ccc', //默认透明
							shadowBlur: 5
						},
						detail: {
							formatter: function(v){
								return Number(v).toFixed(2) + '%'
							}
						},
						title : {
							textStyle: {       // 其余属性默认使用全局文本样式，详见TEXTSTYLE
								fontWeight: 'bolder',
								fontSize: 20,
								fontStyle: 'italic',
								color: '#666',
								shadowColor : '#ccc', //默认透明
								shadowBlur: 10
							}
						},
						data:[]
					}
				],
			}
		}
		if(type == "bar" || type == "line" || type == undefined){  // 未指定, 则默认情况为 bar || line
			p.option = {
				title: {show: false},
				color: ['#4cabce', '#7755aa', '#e5624e', '#f85935'],
				tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
				legend: {
					left: 'center',
					top: 'bottom',
					fontSize: 12,
					data: []
				},
				grid: {
					top: 30,
					left: '10%',
					width: '80%',
				},
				calculable: true,
				xAxis: [{
						type: 'category',
						axisTick: {show: false},
						axisLabel: {fontSize: 12},
						data: []
				}],
				yAxis: [
					{type: 'value', axisLabel: { fontSize: 12}}, 
					{type: 'value', axisLabel: { fontSize: 12}}, 
					{type: 'value', axisLabel: { fontSize: 12}}
				],
				dataZoom: [{type: 'inside'}],
				series: []   
			}
		}
		
        
        
        // 追加系列add
        // 参数为对像数组，每组对像追加一个系列
        // 参数形式：[{name: '', type: 'bar'}, {name: '', type: 'bar'}, {name: '', type: 'line'}]
        p.add_series = function(s){
            // 根据传参，确定每个系列的类型，
            // 同时将名称填写到系列中和图例中，保持其一至性。
            // console.log(s)
            for(let i = 0; i < s.length; i++){
                this.option.legend.data.push(s[i].name);
                let b = {name: s[i].name, type: s[i].type, data: []};
                if(s[i].type == 'bar'){
                    b.barMaxWidth = '30px';
                    b.itemStyle = {};
                    b.itemStyle.barBorderRadius = [2,2,0,0];
                }else if(s[i].type == 'line'){
                    // b.smooth = true;
                }
                this.option.series.push(b);
            }
        }
		
		// 填充数据(仅用于线形,柱形图)
		// 参数为对像数组,每组对像同时填充xAxis.data和series.data
		// 参数形式: datas 与 post 获得的 json 格式一至, [{}, {}, ...]
		// 			xAxisname 指定datas中,用作系列值name的字段名
		// 			datasname 指定series里各值的顺序
		// 例:
		// 		datas = [{name: 's', type: 'a', k1: 0, k2: 3, k3: 8}, ...]
		// 		xAxisname = 'type'
		// 		datasname = ['k1', 'k2', 'k3']
		p.fill_data = function(datas, xAxisname, datasname){
			for(let i = 0; i < datas.length; i++){
				this.option.xAxis[0].data.push(datas[i][xAxisname])
				for(let j = 0; j < datasname.length; j++){
					this.option.series[j].data[i] = datas[i][datasname[j]]
				}
			}
		}
		
		p.toVeticalBar = function(){
			const x = this.option.xAxis
			const y = this.option.yAxis
			this.option.xAxis = y
			this.option.yAxis = x
			
		}
		
		// 利用jquery的json合并函数布置option合并函数
		p.extend = function(s){
			$.extend(true, p.option, s);
		}
        
        // 将横轴上形如 Y-m 格式的月份标签，仅1月时以及第一个标签增加年显示，其他各月显示月数
        p.month_format = function(){
            let s = {axisLabel: { formatter: function(v, i){
                let d = v.split("-");
                let str = d[1] ;
                if(Number(d[1]) == 1 || i === 0) {
                    str = v;
                }
                return str;
            }}}
            $.extend(true, p.option.xAxis[0], s);
            
        }
        
        // 
        p.date_format = function(){
            
            let s = {axisLabel: { formatter: function(v, i){
                var date = new Date(v);
                var texts = [(date.getMonth() + 1), date.getDate()];
                if (i === 0) {
                    texts.unshift(date.getFullYear());
                }
                return texts.join('/');
            }}}
            $.extend(true, p.option.xAxis[0], s);
            
        }

        // p.setDatas = function(data, xAxisDatasName, seriesDatasName){ 
        //  // data 为源数据
        //  // xAxisDatasName 数组，列出各横轴数据项对应源数据的字段名称
        //  // seriesDatasName 数组，列出各系列数据项对应源数据的字段名称
        //  for(let i in data){
        //      let x = data[i];
        //      for(let j in xAxisDatasName){
        //          let w = xAxisDatasName[j];
        //          p.option.xAxis[j].data.push(x[w]);
        //      }
        //      for(let j in seriesDatasName){
        //          let w = seriesDatasName[j];
        //          p.option.series[j].data.push(x[w]);
        //      }
        //  }

        // }
        
        return p;
    }
}

